//将数据处理成树形结构
export const handleTree = (data) => {
  // 用于存储每个节点的映射
  const nodeMap = new Map()
  // 用于存储根节点
  const tree = []

  // 第一次遍历：将所有节点存入 Map 中，并初始化 children 属性
  data.forEach((item) => {
    // 复制节点并添加空的 children 属性
    const node = { ...item, children: [] }
    nodeMap.set(item.message_id, node)
  })

  // 第二次遍历：构建树形结构
  data.forEach((item) => {
    const node = nodeMap.get(item.message_id)
    const parentId = item.parent_id

    if (parentId === null) {
      // 如果 parentId 为 null，说明是根节点，添加到 tree 数组中
      tree.push(node)
    } else {
      const parent = nodeMap.get(parentId)
      if (parent) {
        // 找到父节点，将当前节点添加到父节点的 children 数组中
        parent.children.push(node)
      }
    }
  })

  return tree
}

//将树形结构扁平化
export function extractTree(tree) {
  let deeptree = JSON.parse(JSON.stringify(tree))
  let result = []
  deeptree.forEach((node) => {
    result.push(node)
    if (node.children && node.children.length > 0) {
      result = result.concat(extractTree(node.children))
    }
    delete node.children
  })
  return result
}
//生成唯一值
export function generateUniqueId() {
  const timestamp = new Date().getTime()
  const randomNum = Math.random()
    .toString(36)
    .substr(2, 9)
  return `${timestamp}${randomNum}`
}
